
package Negocio;

import DATABASE.CarpetasDB;
import DATABASE.MailDB;

import java.sql.SQLException;
import java.util.ArrayList;


public class ConexionMails extends Conexion
{
    public void mailsEnviados(MailEnviado mail) throws SQLException
    {
       MailDB enviado = new MailDB();
        enviado.mailsEnviados(mail);
    }
    
    public void mailsGuardados(MailEnviado mail) throws SQLException
    {
       MailDB enviado = new MailDB();
        enviado.mailsGuardados(mail);
    }
    public void mailsNodeseados(MailRecibido mail) throws SQLException
    {
       MailDB spam = new MailDB();
        spam.mailsSpam(mail);
    }
    
    public void mailsEliminados(MailRecibido mail) throws SQLException
    {
       MailDB recibido = new MailDB();
        recibido.mailsEliminados(mail);
    }
    public void mailsDevueltos(MailRecibido mail) throws SQLException
    {
       MailDB eliminado = new MailDB();
        eliminado.mailsDevueltos(mail);
    }
    
    public void mailsDeshacerEtiqueta(MailRecibido mail) throws SQLException
    {
       MailDB etiquetado = new MailDB();
        etiquetado.mailsDeshacerEtiqueta(mail);
    }
    
    public ArrayList listarEnviados() throws SQLException
    {
        
        MailDB enviado = new MailDB();
        return enviado.listarEnviados("SELECT ID_MAIL,DESTINATARIO,ASUNTO,CUERPO,FECHA FROM EMAIL,ENVIADO WHERE ID_MAIL=ID_ENVIADO ORDER BY ID_MAIL");
         //return enviado.listarEnviados("SELECT * FROM EMAIL,ENVIADO WHERE ID_MAIL=ID_ENVIADO");
    }

    public ArrayList listarGuardados() throws SQLException 
    {
        MailDB guardado = new MailDB();
        return guardado.listarEnviados("SELECT * FROM EMAIL,BORRADOR WHERE ID_MAIL=ID_BORRADOR ORDER BY ID_MAIL");
        //return guardado.listarEnviados("SELECT DESTINATARIO,ASUNTO,CUERPO,FECHA FROM EMAIL,BORRADOR WHERE ID_MAIL=ID_BORRADOR");
    }
    
     public ArrayList listarEliminados() throws SQLException 
    {
        MailDB eliminado = new MailDB();
        return eliminado.listarEliminados("SELECT EMAIL.ID_MAIL,REMITENTE,ASUNTO,CUERPO,FECHA, ID_ESTADO FROM EMAIL,ELIMINADO,ESTADO WHERE EMAIL.ID_MAIL=ID_ELIMINADO AND EMAIL.ID_MAIL=ESTADO.ID_MAIL  ORDER BY EMAIL.ID_MAIL");

        
    }
     public ArrayList listarNodeseados() throws SQLException 
    {
        MailDB spam = new MailDB();
        return spam.listadoSpam("SELECT EMAIL.ID_MAIL,REMITENTE,ASUNTO,CUERPO,FECHA, ID_ESTADO FROM EMAIL,SPAM,ESTADO WHERE EMAIL.ID_MAIL=ID_SPAM AND EMAIL.ID_MAIL=ESTADO.ID_MAIL  ORDER BY EMAIL.ID_MAIL");

        
    }
     
      public ArrayList listarEtiquetados() throws SQLException {
       MailDB etiquetado = new MailDB();
       return etiquetado.listarEtiquetados("SELECT ID_MAIL,ASUNTO,REMITENTE,CUERPO,FECHA,CASE ID_ETIQUETA WHEN 1 THEN 'URGENTE' WHEN 2 THEN 'IMPORTANTE' WHEN 3 THEN 'FAVORITOS' END ETIQUETA FROM (SELECT EMAIL.ID_MAIL,ASUNTO,REMITENTE,CUERPO,FECHA,MAIL_ETIQUETA.ID_ETIQUETA ID_ETIQUETA FROM EMAIL,MAIL_ETIQUETA,RECIBIDO WHERE EMAIL.ID_MAIL=RECIBIDO.ID_RECIBIDO AND EMAIL.ID_MAIL = MAIL_ETIQUETA.ID_MAIL ORDER BY MAIL_ETIQUETA.ID_ETIQUETA)");
       
    }

    public void enviarBorrador(MailEnviado mail) throws SQLException 
    {
        MailDB enviado = new MailDB();
        enviado.enviarBorrador(mail);
    }
    
    public ArrayList<Carpeta> cargarCarpetasMover()  throws SQLException
    {
        CarpetasDB cargar = new CarpetasDB();
        return cargar.cargarCarpetasMover();
    }

    public boolean moverMail(int id_carpeta, int id_mail) throws SQLException {
        
       MailDB movido = new MailDB();
       return movido.moverMail(id_carpeta,id_mail);
    }

    public ArrayList cargarMailCarpeta(int id_carpeta) throws SQLException 
    {
        MailDB etiquetado = new MailDB();
       return etiquetado.listarRecibidos("SELECT EMAIL.ID_MAIL ID_MAIL,REMITENTE,ASUNTO,CUERPO,FECHA,ID_ESTADO FROM EMAIL,RECIBIDO,CARPETA_EMAIL,ESTADO WHERE RECIBIDO.ID_RECIBIDO=ESTADO.ID_MAIL AND ID_CARPETA="+id_carpeta+" AND EMAIL.ID_MAIL=RECIBIDO.ID_RECIBIDO AND EMAIL.ID_MAIL=CARPETA_EMAIL.ID_MAIL");
    }

    public boolean MoveraEntrada(int id_mail)throws SQLException 
    {
          MailDB mover= new MailDB();
          return mover.eliminarCarpetaMail(id_mail);
    }


    public void marcarLeido(int id_mail) throws SQLException {
        MailDB leido= new MailDB();
        leido.marcarLeido(id_mail);
    }


    public boolean comprobarMailsCarpeta(int id_caperta)throws SQLException  {
        CarpetasDB cargar = new CarpetasDB();
        return cargar.comprobarMailsCarpeta(id_caperta);
    }


    public int cargarNumRecibidos() throws SQLException {
        MailDB num= new MailDB();
        return num.numeroLeidos("SELECT COUNT(ID_ESTADO) NO_LEIDOS FROM RECIBIDO,ESTADO WHERE ID_RECIBIDO=ID_MAIL AND ID_ESTADO=1");
    }


    public boolean eliminarCarpeta(int id_carpeta) throws SQLException{
        CarpetasDB cargar = new CarpetasDB();
        return cargar.eliminarCarpeta(id_carpeta);
    }

    public void guardarEliminado(int id_mail,String remitente) throws SQLException{
        MailDB eliminar = new MailDB();
        eliminar.guardarEliminado(id_mail,remitente);
    }

    public boolean Logear(String usuario, String contraseña) throws SQLException {
        MailDB cargar = new MailDB();
        return cargar.Loguear(usuario,contraseña);
    }

    public void cambiarServidor(String servidor) throws SQLException {
        
        MailDB cargar = new MailDB();
        cargar.cambiarServidor(servidor);
    }

    public int cargarServidor() throws SQLException
    {
        MailDB cargar = new MailDB();
        return cargar.cargarServidor();
    }



    

   
}
